/***********************************************************************************
 * 文件名： mcu.h
 * 版本： 1
 * 说明：
 * 		九齐 NY8 驱动支持包总头文件。包含了其它外设驱动的头文件。 Mcu_Init 将按照配置文件
 *  初始化MCU时钟和中断使能状态。提供的其它 API 请参见本文件中的说明。
 * 修改记录：
 * 	2022/04/09: 初版。 刘言。
***********************************************************************************/
#ifndef _MCU_H_
#define _MCU_H_

#include "typedef.h"
#include "ny8_driver_config.h"   // MCU驱动配置文件
#include "function_define.h"        // 一些操作MCU的伪函数

#include <math.h>

// MCU具体型号常量定义
#define MCU_NY8B062E    0


// 包含MCU头文件
#ifndef MCU_NY8_MODEL
    #error "必须先定义 MCU_NY8_MODEL 。"
#else
    #if (MCU_NY8_MODEL == MCU_NY8B062E)
        #ifndef __CPU_NY8B062E
            #define __CPU_NY8B062E
        #endif
    #endif
#endif

#include <ny8.h>         // 官方提供的MCU型号头文件
#include <ny8_romaccess.h>  // 提供读取ROM14bit函数，常规指针仅能读取低8bits
// #include <ny8_eeprom.h>


// // 参数检查与计算

// 低速时钟频率 Hz ，MCU的固定不可变参数
#define MCU_FLOSC       32768      
// 指令时钟频率 Hz
#define MCU_FINST       (MCU_FHOSC/MCU_ICY)


// MCU时钟和核心外设初始化
// NY8系列默认FOSC是高频率振荡器（ FHOSC）、正常模式运行、LVR开启
#define Mcu_Init()  \
{\
    Gpio_SetPAIntCtrl(0X00);    \
    Gpio_SetPBIntCtrl(0X00);    \
    INTE = MCU_INTE_INIT; \
    INTE2 = MCU_INTE2_INIT; \
}


// 运行系统嘀嗒定时器，仅提供给Polsys调用
#define Mcu_TickStart()     Tim0_Init()

// 开总中断
#define Mcu_EnableInt()     ENI()

// 关总中断
#define Mcu_DisableInt()    DISI()

#include "mcu_timer.h"      // 这些头文件在这里可能不太合适，暂时没有找到更好的地方
#include "mcu_adc.h"
#include "mcu_wdt.h"
#include "mcu_delay.h"
#include "mcu_rfc.h"
#include "mcu_gpio.h"

#endif
